﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Smartee.RichText
{
    public abstract class ContentModifier : Content
    {
    }

    public class BoldFaceModifier : ContentModifier
    {
        private bool _bold;
        public bool Bold { get { return _bold; } }

        public BoldFaceModifier(bool bold)
        {
            _bold = bold;
        }

        public override void Accept(IVisitor visitor)
        {
            visitor.Visit(this);
        }
    }

    public class StrikeModifier : ContentModifier
    {
        private bool _strike;
        public bool Strike { get { return _strike; } }

        public StrikeModifier(bool strike)
        {
            _strike = strike;
        }

        public override void Accept(IVisitor visitor)
        {
            visitor.Visit(this);
        }
    }

    public class UnderlineModifier : ContentModifier
    {
        private bool _underline;
        public bool Underline { get { return _underline; } }

        public UnderlineModifier(bool underline)
        {
            _underline = underline;
        }

        public override void Accept(IVisitor visitor)
        {
            visitor.Visit(this);
        }
    }

    public class FontModifier : ContentModifier
    {
        private int _fontId;
        public int FontId { get { return _fontId; } }

        public FontModifier(int fontId)
        {
            _fontId = fontId;
        }

        public override void Accept(IVisitor visitor)
        {
            visitor.Visit(this);
        }
    }

    public class ForegoundColorModifier : ContentModifier
    {
        private int _colorId;
        public int ColorId { get { return _colorId; } }

        public ForegoundColorModifier(int colorId)
        {
            _colorId = colorId;
        }

        public override void Accept(IVisitor visitor)
        {
            visitor.Visit(this);
        }
    }

    public class BackgoundColorModifier : ContentModifier
    {
        private int _colorId;
        public int ColorId { get { return _colorId; } }

        public BackgoundColorModifier(int colorId)
        {
            _colorId = colorId;
        }

        public override void Accept(IVisitor visitor)
        {
            visitor.Visit(this);
        }
    }

    public class TextDirectionModifier : ContentModifier
    {
        public TextDirection TextDirection { get; private set; }

        public TextDirectionModifier(TextDirection textDirection)
        {
            TextDirection = textDirection;
        }

        public override void Accept(IVisitor visitor)
        {
            visitor.Visit(this);
        }
    }
}
